C++11以前は、C++の標準仕様は 「スレッドに依存しない」 POSIXスレッド(Pthreads)やWin32などのプラットフォーム固有のAPIに依存していました。モダンC++は、正式な メモリモデル と標準化された並行処理APIを導入することで、言語そのものを革命的に変革しました。
1. C++11の「大転換」
C++11は、単一スレッドの抽象マシンから、 <thread> ヘッダおよび std::threadを通じて並行実行をネイティブに理解するものへと変貌させました。これにより、マルチスレッド処理は外部ライブラリの問題から、言語のコア型システムの一部へと移行しました。
2. 例外の保証
この noexcept 修飾子は並行処理環境において極めて重要です。関数(スレッドのエントリポイントなど)が例外を伝播しないことを契約するものです。例外が noexcept 境界を越えて発生した場合、 std::terminate() が即座に呼び出され、未定義状態の破壊を防ぎます。
3. 一貫性のあるデータ型
標準化には、 long long int (C99から採用)および std::filesystemといった型が含まれており、スレッド間で共有される際に、データ幅やシステムとの相互作用がハードウェア間で一貫して保持されることを確保しています。
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>